package com;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

/**
 * Map 转换为 List 并以 value 进行排序
 * 
 * @author lenovo
 * @Date 2020年7月18日
 * @Time 上午11:04:12
 */
public class Collection_21_MapToList {

	public static void main(String[] args) {
		Map<String, Integer> map = new HashMap<String, Integer>();
		map.put("a", 1);
		map.put("c", 2);
		map.put("d", 1);
		map.put("b", 12);

		// 因为 map 中存储的是entry,所以想要把 map 转换为 list ,那么list 中的元素应该就是 Entry类型

		// 先把entry拿出来
		Set set = map.entrySet();

		// 调用ArrayList 的有参构造,把 set 直接转换为 List
		List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);

		Collections.sort(list, new Comparator<Entry<String, Integer>>() {

			@Override
			public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
				// TODO Auto-generated method stub
				return o1.getValue() - o2.getValue();
			}
		});

		System.out.println(list);
		// [a=1, d=1, c=2, b=12]

	}

}
